/**
 * 责任链模型
 * 角色：
 * Handler 抽象的处理者，定义一个处理请求的接口同时内聚一个Handler
 * ConcreteHandler 具体的处理者，根据请求中的条件判断自身是否可以执行此请求，不能执行时调用下一个请求
 * Request 包装的请求对象
 *
 * 1.将请求和处理分开，实现解耦合，提搞系统灵活性
 * 2.简化了对象，是对象不用知道链条的结构
 * 3.性能会收到影响，特别是链条长度比较大时。可已在Handler中去控制最大的节点数
 * 4.调试不方便。类似递归的方式
 * 5.最佳应用场景: Spring中的 HandlerExecutionChain FilterChain ; 多级请求、审批流程等
 */
package com.design.patterns.list.responsibilitychain;